package top.lixunda.ecommerce.server.user.api.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import top.lixunda.commerce.common.core.entity.MessageObject;
import top.lixunda.ecommerce.server.user.api.entity.dto.UserRoleInsertDTO;
import top.lixunda.ecommerce.server.user.api.entity.dto.UserRoleRemoveDTO;

import java.util.List;

/**
 * 用户角色分配管理接口
 *
 * @author lixunda
 * @version time:2020/4/26 16:19
 */
@Api("用户角色分配管理接口")
@RequestMapping("/user_role")
public interface IUserRoleController {

    /**
     * 分配店铺角色
     *
     * @param list 角色操作DTO
     * @return 是否保存成功
     */
    @ApiOperation("分配店铺角色")
    @PostMapping("allotStoreRole")
    MessageObject<Boolean> allotStoreRole(@RequestBody List<UserRoleInsertDTO> list);

    /**
     * 分配角色
     *
     * @param list 角色操作DTO
     * @return 是否保存成功
     */
    @ApiOperation("分配角色")
    @PostMapping("allotAdminRole")
    MessageObject<Boolean> allotAdminRole(@RequestBody List<UserRoleInsertDTO> list);

    /**
     * 移除店铺角色
     *
     * @param list 角色操作DTO
     * @return 是否移除成功
     */
    @ApiOperation("移除店铺角色")
    @PostMapping("removeStoreRoleAllot")
    MessageObject<Boolean> removeStoreRoleAllot(@RequestBody List<UserRoleRemoveDTO> list);

    /**
     * 移除管理系统角色
     *
     * @param list 角色操作DTO
     * @return 是否移除成功
     */
    @ApiOperation("移除管理系统角色")
    @PostMapping("removeAdminRoleAllot")
    MessageObject<Boolean> removeAdminRoleAllot(@RequestBody List<UserRoleRemoveDTO> list);

    /**
     * 根据分配编号移除店铺角色分配
     *
     * @param list 分配编号列表
     * @return 是否移除成功
     */
    @ApiOperation("根据分配编号移除店铺角色分配")
    @PostMapping("removeStoreRoleAllotByIds")
    MessageObject<Boolean> removeStoreRoleAllotByIds(@RequestBody List<Integer> list);

    /**
     * 根据分配编号移除管理系统角色分配
     *
     * @param list 分配编号列表
     * @return 是否移除成功
     */
    @ApiOperation("根据分配编号移除管理系统角色分配")
    @PostMapping("removeAdminRoleAllotByIds")
    MessageObject<Boolean> removeAdminRoleAllotByIds(@RequestBody List<Integer> list);

}
